import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pandas as pd
# 加载波士顿房价数据集


# 1.读取数据源
df = pd.read_csv("../data/house_data.csv")

#%%

# 2.选择特征和目标
X = df.iloc[:,:-1]
y = df.MEDV


# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化 XGBoost 回归器
# 这里我们使用了一些基本的参数设置，你可以根据具体任务调整这些参数
xgb_reg = xgb.XGBRegressor(objective='reg:squarederror', colsample_bytree=0.3, learning_rate=0.1,
                           max_depth=5, alpha=10, n_estimators=10)

# 训练模型
xgb_reg.fit(X_train, y_train)

# 使用模型进行预测
y_pred = xgb_reg.predict(X_test)

# 评估模型
rmse = mean_squared_error(y_test, y_pred, squared=False)  # 计算 RMSE
print(f"Root Mean Squared Error: {rmse:.2f}")

# 如果需要的话，可以进一步进行特征重要性分析
importances = xgb_reg.feature_importances_
print("Feature importances:", importances)